Software applications are extremely popular in today's computing world. In particular, with the increase in popularity with mobile application stores and marketplaces, users are able to download software applications on demand using their client devices. Currently, when a client device requests to download a software application, one or more servers provide an executable file that is packaged with an established set of configuration files.
Currently there are different ways to handle device diversity issues. One such method is to have the software applications prebuilt for multiple client devices, whereby each client device would download its respective prebuilt software application. This would be undesired due to the number of different client devices that are available for a particular software application. Another method is to configure the software application to have all the components that are required by all different available client devices, whereby the application would be required to selectively handle the adaptations at run time based on the particular requesting client device. This would be disadvantageous as the result would be a software application that is extremely large in size. Another method would be to design the software application to have only features that can be utilized by all of the available client devices. This is undesired as the software application would not allow more powerful client devices to take advantage of potentially more powerful features that could otherwise be offered in the software application.
What is needed is a system and method which takes into account user profile information along with profile information of the client device to generate a personalized software application that is able to take advantage of the user's profile information and the device's profile information while minimizing its overall file size.